import { RedDot_Key, Control_Listen } from "../../config/ui_def";
import util from '../tool/util'

cc.Class({
    extends: cc.Component,

    properties: {
        update_red_list: [],   // 此次需要更新的所有记录
    },
    // 
    initInfo() {
        // 红点字典
        // 1.菜单栏 用于判断
        this.red_dict = {
            'LeftBar': {},
            'bottomBar': {},
        }
        // 2.红点层 // 一般会有三层。我们只做最外一层
        // 菜单栏 红点缓存 和 默认值
        // 红点名 用枚举统一管理 RedDot_Key 在 ui_def 自行备注
        // 2.5 红点图片没加的自己加一下 右上角对齐 left-10 right-10 ，common图集z下
        // this.red_dict['topUser'][RedDot_Key.DAY_SIGN] = false
        // this.red_dict['leftBar'][RedDot_Key.TASK] = true
        // 3.在UpdateRedDot 部分增加红点函数
        // 4.在函数调用时 使用 updateRedDot更新红点检测
    },
    // 更新红点
    updateRedDot(key, parm) {
        if (key) {
            switch (key) {
                case RedDot_Key.DAY_SIGN:
                    this.updateSign()
                    break
                case RedDot_Key.ROLE_INFO:
                    this.updateRole()
                    break
                case RedDot_Key.TASK:
                    this.updateTask(parm)
                    break
                case RedDot_Key.TOWER_INFO:
                    this.updateTower()
                    break
            }
            this.sendRedUpdate()
        } else {
            this.updateAllRedDot()
        }
    },
    // 更新所有红点 
    updateAllRedDot() {
        this.updateSign()
        this.updateTask()
        this.updateRole()
        this.sendRedUpdate()
        // 就是全部写在这里的意思
    },
    sendRedUpdate() {
        for (let i = this.update_red_list.length - 1; i >= 0; i--) {
            let redInfo = this.update_red_list[i]
            gg.eventManager.emit(redInfo.menu, Control_Listen.UPDATE_RED_DOT, redInfo.key, redInfo.value)
            this.update_red_list.splice(i, 1)
        }
    },
    updateSign() {
        let red_res = false
        let sign_histroy = he.local.getJson('sign_histroy', 'user')
        if (!sign_histroy) {
            red_res = true
        }
        if (sign_histroy && sign_histroy.length == 0) {
            red_res = true
        }
        if (sign_histroy && sign_histroy.length && util.checkCrossDay(sign_histroy[sign_histroy.length - 1])) {
            red_res = true
        }
        // console.log(red_res)
        if (red_res != this.red_dict['LeftBar'][RedDot_Key.DAY_SIGN]) {
            // 更新缓存
            this.red_dict['LeftBar'][RedDot_Key.DAY_SIGN] = red_res
            this.update_red_list.push({
                menu: 'LeftBar',
                key: RedDot_Key.DAY_SIGN,
                value: red_res
            })
        }
    },

    //展示红点
    updateRole(param) {
        if (param) {
            this.update_red_list.push({
                menu: 'bottomBar',
                key: RedDot_Key.ROLE_INFO,
                value: true
            })
        } else {
            let team = he.local.getJson('team', 'user')
            if (team && team.length > 0) {
                let needShowRed = false
                for (let i = 0; i < team.length; i++) {
                    let info = team[i]
                    for (let j = 0; j < info.equips.length; j++) {
                        let lv = info.equips[j] + 1

                        let costGrp = he.db.getDataByArgs("Equip", { equip: j, level: lv })
                        let roleNeed = he.db.getDataByArgs("Role", { roleId: info.id, level: lv })
                        if (costGrp == null) {
                            // needShowRed = false
                        } else {
                            let costNeed = `${costGrp.cost}#${roleNeed.cost}`
                            needShowRed = gg.data.checkItemStr(costNeed, false)
                        }
                        if (needShowRed) {
                            break
                        }
                    }
                    if (needShowRed) {
                        break
                    }
                }
                this.update_red_list.push({
                    menu: 'bottomBar',
                    key: RedDot_Key.ROLE_INFO,
                    value: needShowRed
                })
            }
        }
    },

    //更新任务  isFirst 是否第一次登陆
    updateTask(isFirst) {
        if (isFirst) {
            this.update_red_list.push({
                menu: 'bottomBar',
                key: RedDot_Key.TASK,
                value: true
            })
        } else {
            let red_res = false
            let taskList = he.local.getJson('task', 'user')
            if (taskList) {
                for (let i = 0; i < taskList.length; i++) {
                    if (taskList[i].num >= taskList[i].need&&taskList[i].isGet==false) {
                        red_res = true
                        break
                    }
                }
                this.update_red_list.push({
                    menu: 'bottomBar',
                    key: RedDot_Key.TASK,
                    value: red_res
                })
            }


        }
    },



    newArr(data) {
        var nData = new Array();
        for (var i = 0; i < data.length; i++) {
            if (nData.indexOf(data[i]) == -1) {
                nData.push(data[i]);
            }
        }
        return nData;
    },

});
